//package com.example.havi.helper;
//
//import android.content.Context;
//import android.media.MediaPlayer;
//import android.os.AsyncTask;
//import android.widget.Toast;
//
//import com.example.havi.R;
//import com.hyphenate.chat.EMClient;
//import com.hyphenate.chat.EMMessage;
//import com.hyphenate.chat.EMVoiceMessageBody;
//import com.hyphenate.exceptions.HyphenateException;
//import com.hyphenate.util.EMLog;
//
//import java.io.File;
//
//public enum VoicePlayerHelper {
//    INSTANCE;
//
//    private EaseChatRowVoicePlayer voicePlayer;
//    private Context context;
//
//    public void init(Context context, UpdateVoiceItemListener listener){
//        voicePlayer = EaseChatRowVoicePlayer.getInstance(context);
//        this.context = context;
//        this.listener = listener;
//    }
//
//    public void onVoiceItemClick(final EMMessage message) {
//        String msgId = message.getMsgId();
//        if (voicePlayer.isPlaying()) {
//            // Stop the voice play first, no matter the playing voice item is this or others.
//            voicePlayer.stop();
//            // Stop the voice play animation.
//            listener.onUpdateVoiceItem(message);
//
//            // If the playing voice item is this item, only need stop play.
//            String playingId = voicePlayer.getCurrentPlayingId();
//            if (msgId.equals(playingId)) {
//                return;
//            }
//        }
//
//        if (message.direct() == EMMessage.Direct.SEND) {
//            // Play the voice
//            String localPath = ((EMVoiceMessageBody) message.getBody()).getLocalUrl();
//            File file = new File(localPath);
//            if (file.exists() && file.isFile()) {
//                playVoice(message);
//                // Start the voice play animation.
//                listener.onUpdateVoiceItem(message);
//            } else {
//                asyncDownloadVoice(message);
//            }
//        } else {
//            final String st = context.getResources().getString(R.string.Is_download_voice_click_later);
//            if (message.status() == EMMessage.Status.SUCCESS) {
//                if (EMClient.getInstance().getOptions().getAutodownloadThumbnail()) {
//                    play(message);
//                } else {
//                    EMVoiceMessageBody voiceBody = (EMVoiceMessageBody) message.getBody();
//                    EMLog.i("frank", "Voice body download status: " + voiceBody.downloadStatus());
//                    switch (voiceBody.downloadStatus()) {
//                        case PENDING:// Download not begin
//                        case FAILED:// Download failed
//                            listener.onUpdateVoiceItem(message);
//                            asyncDownloadVoice(message);
//                            break;
//                        case DOWNLOADING:// During downloading
//                            Toast.makeText(context, st, Toast.LENGTH_SHORT).show();
//                            break;
//                        case SUCCESSED:// Download success
//                            play(message);
//                            break;
//                    }
//                }
//            } else if (message.status() == EMMessage.Status.INPROGRESS) {
//                Toast.makeText(context, st, Toast.LENGTH_SHORT).show();
//            } else if (message.status() == EMMessage.Status.FAIL) {
//                Toast.makeText(context, st, Toast.LENGTH_SHORT).show();
//                asyncDownloadVoice(message);
//            }
//        }
//    }
//
//    public void onStop() {
//        if (voicePlayer.isPlaying()) {
//            voicePlayer.stop();
//        }
//    }
//
//    private void asyncDownloadVoice(final EMMessage message) {
//        new AsyncTask<Void, Void, Void>() {
//            @Override
//            protected Void doInBackground(Void... params) {
//                EMClient.getInstance().chatManager().downloadAttachment(message);
//                return null;
//            }
//
//            @Override
//            protected void onPostExecute(Void result) {
//                super.onPostExecute(result);
//                listener.onUpdateVoiceItem(message);
//            }
//        }.execute();
//    }
//
//    private void play(EMMessage message) {
//        String localPath = ((EMVoiceMessageBody) message.getBody()).getLocalUrl();
//        File file = new File(localPath);
//        if (file.exists() && file.isFile()) {
//            ackMessage(message);
//            playVoice(message);
//            // Start the voice play animation.
//            listener.onUpdateVoiceItem(message);
//        } else {
//            EMLog.e("frank", "file not exist");
//        }
//    }
//
//    private void ackMessage(EMMessage message) {
//        EMMessage.ChatType chatType = message.getChatType();
//        if (!message.isAcked() && chatType == EMMessage.ChatType.Chat) {
//            try {
//                EMClient.getInstance().chatManager().ackMessageRead(message.getFrom(), message.getMsgId());
//            } catch (HyphenateException e) {
//                e.printStackTrace();
//            }
//        }
//        if (!message.isListened()) {
//            EMClient.getInstance().chatManager().setVoiceMessageListened(message);
//        }
//    }
//
//    private void playVoice(final EMMessage msg) {
//        voicePlayer.play(msg, new MediaPlayer.OnCompletionListener() {
//            @Override
//            public void onCompletion(MediaPlayer mp) {
//                // Stop the voice play animation.
//                listener.onUpdateVoiceItem(msg);
//            }
//        });
//    }
//
//    private UpdateVoiceItemListener listener;
//    public interface UpdateVoiceItemListener{
//        void onUpdateVoiceItem(EMMessage msg);
//    }
//
//}
